Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

22 Stron V  « < 14 15 16 17 18 > »   
Reply to this topicStart new topic
> SQL Injection/Insertion, Jak zapobiec włamaniu na stronę.
Soulast
post
Post #301





Grupa: Zarejestrowani
Postów: 133
Pomógł: 6
Dołączył: 26.10.2009

Ostrzeżenie: (0%)
-----


a ja się już nie co zagubiłem w tym wszystkim lecz czy przy przykładzie:

  1. $sql=mysql_query("SELECT * FROM costam WHERE cos=$wartosc[id] ORDER BY id DESC");


jest dobrze zabezpieczyć id poprzez dodanie przed wartością (int)
  1. $sql=mysql_query("SELECT * FROM costam WHERE cos=(int)$wartosc[id] ORDER BY id DESC");


Czy takie coś przed czymś zabezpiecza?zrozumiałem że dzięki (int) żadne ekstra znaki czy litery nie będą brane pod uwagę
Go to the top of the page
+Quote Post
Agape
post
Post #302





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


Powiedzcie mi, jak powinienem filtrować całą tablicę która wygląda tak:

  1. (
  2. [55] => Array
  3. (
  4. [uid] => 55
  5. [nazwa] => CCBC 1325-LP
  6. [opis] => Kamera Kolorowa, przetwornik CCD 1/3" Sony SuperHAD czu?o?? 0.6Lux rozdzielczo?? 480 linii Funkcja AES AGC BLC Uzas:12VDC/24VAC/2.8W wymiar 122x72x63mm
  7.  
  8. [ilosc] => 1
  9. [cena] => 111
  10. )
  11.  
  12. [53] => Array
  13. (
  14. [uid] => 53
  15. [nazwa] => CCBC 1325-LP
  16. [opis] => Kamera Kolorowa, przetwornik CCD 1/3" Sony SuperHAD czu?o?? 0.6Lux rozdzielczo?? 480 linii Funkcja AES AGC BLC Uzas:12VDC/24VAC/2.8W wymiar 122x72x63mm
  17.  
  18. [ilosc] => 1
  19. [cena] => 99
  20. )
  21.  
  22. )


Da się jakoś całą zfiltrować np, przy
  1. foreach($_SESSION['koszyk'] as $produkt){

czy muszę po kolei każde pole które wywojuje np. tak:
  1. $_SESSION['koszyk'] [$id] ['ilosc']


Podajcie jakiś przykład najlepiej. Mam funkcje filtruj ale nie wiem jak ją użyć do powyższego ...

Ten post edytował Agape 22.06.2010, 09:45:07
Go to the top of the page
+Quote Post
erix
post
Post #303





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




O mamo, a przeczytałeś chociaż pierwszą stronę tego wątku, czy czekasz, aż ktoś Ci podrzuci gotowca?
Go to the top of the page
+Quote Post
Agape
post
Post #304





Grupa: Zarejestrowani
Postów: 384
Pomógł: 13
Dołączył: 16.06.2006

Ostrzeżenie: (0%)
-----


Cytat(Agape @ 22.06.2010, 10:42:42 ) *
Mam funkcje filtruj ale nie wiem jak ją użyć do powyższego ...



jak to szybko zrobic na tablicy wielowymiarowej nie powtarzajac za kazdym razem
  1. filtruj($_SESSION['koszyk'] [$id] ['ilosc'])
  2. filtruj($_SESSION['koszyk'] [$id] ['cena'])
  3. filtruj($_SESSION['koszyk'] [$id] ['opis'])


Ten post edytował Agape 22.06.2010, 13:13:04
Go to the top of the page
+Quote Post
erix
post
Post #305





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




array_map
Go to the top of the page
+Quote Post
dsfds2432432dsf
post
Post #306





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Zasada jest prosta - Don't trust user input

A tak na poważnie to:

- używaj abstrakcji PDO lub ORM-a
- procedury składowane
- pomyśl 2x pisząc RAW SQLa

Proste zasady, których trzeba przestrzegać.
Go to the top of the page
+Quote Post
Hoku
post
Post #307





Grupa: Zarejestrowani
Postów: 49
Pomógł: 2
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


tak się zastanawiam czy przepuszczenie przez preg_replace z regułą [^a-zA-Z_] i usunięcie całej reszty + mysql_real_escape_string i dla liczb stosowanie (int) jest wystarczająco bezpieczne?
Go to the top of the page
+Quote Post
Crozin
post
Post #308





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A po co Ci to wyrażenie?
Go to the top of the page
+Quote Post
bełdzio
post
Post #309





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(Hoku @ 6.07.2010, 23:58:52 ) *
tak się zastanawiam czy przepuszczenie przez preg_replace z regułą [^a-zA-Z_] i usunięcie całej reszty + mysql_real_escape_string i dla liczb stosowanie (int) jest wystarczająco bezpieczne?

nie, po 1. samym a-z da się namieszać 2. filtracje / walidacje stosuje się odpowiednio do filtrowanych / walidowanych danych
Go to the top of the page
+Quote Post
Hoku
post
Post #310





Grupa: Zarejestrowani
Postów: 49
Pomógł: 2
Dołączył: 6.07.2010

Ostrzeżenie: (0%)
-----


Wyrażenie samo w sobie ma oczyszczać np. dodawaną lub pobieraną kategorię zostawiając jedynie a-Z i znak"_" usuwając spacje, pokemoniaste znaczki i cyfry nie chce mieć czegoś takiego.

bełdzio jak można namieszać, skoro spacja,znaki spec. nie przechodzą?a zmienna tak czy siak przechodzi przez mysql_real_escape_string() chyba, że się mylę i coś zostaje, tylko co wtedy może zostać złego?. Zawsze wolę znać uzasadnienie.

Ten post edytował Hoku 7.07.2010, 09:34:12
Go to the top of the page
+Quote Post
bełdzio
post
Post #311





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


wszystko zależy od tego, gdzie następnie wyświetlasz te dane, jeśli wyświetlisz jako "zwykły" text na stronie będzie zapewne ok, jak wrzucisz jako zawartość skryptu JS to już niekoniecznie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
SHiP
post
Post #312





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Ja wspomne, że mysql_real_escape_string oraz addslashes są dziurawe jeżeli mamy doczynienia z chińskim(i kilkoma innymi) kodowaniem. Należy stosować mysqli->real_escape_string()
Go to the top of the page
+Quote Post
H4eX
post
Post #313





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 1.07.2010

Ostrzeżenie: (0%)
-----


A co powiecie na takie zabezpieczenie przed SQL Injection?

  1. $cracktrack = $_SERVER['QUERY_STRING'];
  2. $wormprotector = array('chr(', 'chr=', 'chr%20', '%20chr', 'wget%20', '%20wget', 'wget(',
  3. 'cmd=', '%20cmd', 'cmd%20', 'rush=', '%20rush', 'rush%20',
  4. 'union%20', '%20union', 'union(', 'union=', 'echr(', '%20echr', 'echr%20', 'echr=',
  5. 'esystem(', 'esystem%20', 'cp%20', '%20cp', 'cp(', 'mdir%20', '%20mdir', 'mdir(',
  6. 'mcd%20', 'mrd%20', 'rm%20', '%20mcd', '%20mrd', '%20rm',
  7. 'mcd(', 'mrd(', 'rm(', 'mcd=', 'mrd=', 'mv%20', 'rmdir%20', 'mv(', 'rmdir(',
  8. 'chmod(', 'chmod%20', '%20chmod', 'chmod(', 'chmod=', 'chown%20', 'chgrp%20', 'chown(', 'chgrp(',
  9. 'locate%20', 'grep%20', 'locate(', 'grep(', 'diff%20', 'kill%20', 'kill(', 'killall',
  10. 'passwd%20', '%20passwd', 'passwd(', 'telnet%20', 'vi(', 'vi%20',
  11. 'insert%20into', 'select%20', 'nigga(', '%20nigga', 'nigga%20', 'fopen', 'fwrite', '%20like', 'like%20',
  12. '$_request', '$_get', '$request', '$get', '.system', 'HTTP_PHP', '&aim', '%20getenv', 'getenv%20',
  13. 'new_password', '&icq','/etc/password','/etc/shadow', '/etc/groups', '/etc/gshadow',
  14. 'HTTP_USER_AGENT', 'HTTP_HOST', '/bin/ps', 'wget%20', 'uname\x20-a', '/usr/bin/id',
  15. '/bin/echo', '/bin/kill', '/bin/', '/chgrp', '/chown', '/usr/bin', 'g\+\+', 'bin/python',
  16. 'bin/tclsh', 'bin/nasm', 'perl%20', 'traceroute%20', 'ping%20', '/usr/X11R6/bin/xterm', 'lsof%20',
  17. '/bin/mail', '.conf', 'motd%20', 'HTTP/1.', '.inc.php', 'config.php', 'cgi-', '.eml',
  18. 'file\://', 'window.open', '<script>', 'javascript\://','img src', 'img%20src','.jsp','ftp.exe',
  19. 'xp_enumdsn', 'xp_availablemedia', 'xp_filelist', 'xp_cmdshell', 'nc.exe', '.htpasswd',
  20. 'servlet', '/etc/passwd', 'wwwacl', '~root', '~ftp', '.js', '.jsp', 'admin_', '.history',
  21. 'bash_history', '.bash_history', '~nobody', 'server-info', 'server-status', 'reboot%20', 'halt%20',
  22. 'powerdown%20', '/home/ftp', '/home/www', 'secure_site, ok', 'chunked', 'org.apache', '/servlet/con',
  23. '<script', '/robot.txt' ,'/perl' ,'mod_gzip_status', 'db_mysql.inc', '.inc', 'select%20from',
  24. 'select from', 'drop%20', '.system', 'getenv', 'http_', '_php', 'php_', 'phpinfo()', '<?php', '?>', 'sql=');
  25.  
  26. $checkworm = str_replace($wormprotector, '*', $cracktrack);
  27.  
  28. if ($cracktrack != $checkworm)
  29. {
  30. echo "GDZIE?!";
  31. }


Ten post edytował H4eX 16.07.2010, 14:21:15
Go to the top of the page
+Quote Post
Spawnm
post
Post #314





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




A co jak ja cię poproszę/zlecę napisanie mi bloga na którym chcę pisać o programowaniu ? Leżysz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
pyro
post
Post #315





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Poza tym to zabezpieczenie totalnie nic nie daje, to co podaje jako parametr mogę zakodować szesnastkowo
Go to the top of the page
+Quote Post
H4eX
post
Post #316





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 1.07.2010

Ostrzeżenie: (0%)
-----


Czy oprócz kodowania szesnastkowego, da się jeszcze jakimś innym zakodować parametr?
Go to the top of the page
+Quote Post
Spawnm
post
Post #317





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Cytat(SHiP @ 7.07.2010, 14:20:48 ) *
Ja wspomne, że mysql_real_escape_string oraz addslashes są dziurawe jeżeli mamy doczynienia z chińskim(i kilkoma innymi) kodowaniem. Należy stosować mysqli->real_escape_string()

Czy czasem iconv nie rozwiązuje tego typu problemów ?
  1. $str=@iconv("utf-8", "utf-8//IGNORE", $str)


Cytat
Należy stosować mysqli->real_escape_string()

A jak z PDO? Też powinno sobie radzić .
Go to the top of the page
+Quote Post
erix
post
Post #318





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Weźcie mi wyjaśnijcie jedno - jest już kilka skutecznych metod, ludzie dopisują cały czas jakieś swoje-nowe, które się wydają im działać, a tak naprawdę są strzałami w stopy.

Po co?
Go to the top of the page
+Quote Post
Spawnm
post
Post #319





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Erix - bo w sieci na stronach o sql injection zamiast podawać info o funkcjach filtrujących dają gadki typu
'najlepiej stworzyć funkcję która będzie filtrować treść z niebezpiecznych znaków' , swego czasu gdy sam dopiero podchodziłem do tej tematyki spotykałem chyba tylko takie wymysły... dopiero w jakiejś książce znalazłem sensowne wyjaśnienie i funkcję ;p
Go to the top of the page
+Quote Post
SHiP
post
Post #320





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


@Spawnm: musiałbym to iconv przetestować ale moim zdaniem nie ma sensu sobie komplikować życia. PDO również jest bezpieczne więc wystarczy wybrac mysqli lub pdo. Dziurawy jest jedynie stary strukturalny moduł obsługi mysql ale to i tak tylko przy kilku azjatyckich kodowaniach.

Wszelkie te zabezpieczenia operujące na słownikach są kretyńskie zawsze można większość z nich ominąć za pomocą komentarzy. Nawet jeśli filtrujesz np. UNION mogę napisać U/**/N/**/I/**/O/**/N albo w hex albo wykorzystując funkcję char()
Go to the top of the page
+Quote Post

22 Stron V  « < 14 15 16 17 18 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 19:29